![]() |
Kinetis SDK API Reference Manual
1.0.0-beta
Freescale Semiconductor, Inc.
|
The section describes the programming interface of the UART Peripheral driver. More...
Data Structures | |
| struct | uart_state_t |
| Runtime state of the UART driver. More... | |
| struct | uart_user_config_t |
| User configuration structure for UART driver. More... | |
UART Driver | |
| uart_status_t | uart_init (uint32_t uartInstance, uart_state_t *uartState, const uart_user_config_t *uartUserConfig) |
| This function initializes a UART instance for operation. More... | |
| uart_status_t | uart_send_data (uart_state_t *uartState, const uint8_t *sendBuffer, uint32_t txByteCount, uint32_t timeout) |
| This function sends (transmits) data out through the UART module using a blocking method. More... | |
| uart_status_t | uart_send_data_async (uart_state_t *uartState, const uint8_t *sendBuffer, uint32_t txByteCount) |
| This function sends (transmits) data through the UART module using a non-blocking method. More... | |
| uart_status_t | uart_get_transmit_status (uart_state_t *uartState, uint32_t *bytesTransmitted) |
| This function returns whether the previous UART transmit has finished. More... | |
| uart_status_t | uart_get_receive_status (uart_state_t *uartState, uint32_t *bytesReceived) |
| This function returns whether the previous UART receive is complete. More... | |
| void | uart_shutdown (uart_state_t *uartState) |
| This function shuts down the UART by disabling interrupts and the transmitter/receiver. More... | |
| uart_status_t | uart_receive_data (uart_state_t *uartState, uint8_t *rxBuffer, uint32_t requestedByteCount, uint32_t timeout) |
| This function gets (receives) data from the UART module using a blocking method. More... | |
| uart_status_t | uart_receive_data_async (uart_state_t *uartState, uint8_t *rxBuffer, uint32_t requestedByteCount) |
| This function gets (receives) data from the UART module using a non-blocking method. More... | |
| uart_status_t | uart_abort_sending_data (uart_state_t *uartState) |
| This function terminates an asynchronous UART transmission early. More... | |
| uart_status_t | uart_abort_receiving_data (uart_state_t *uartState) |
| This function terminates an asynchronous UART receive early. More... | |
| struct uart_state_t |
This struct holds data that are used by the UART peripheral driver to communicate between the transfer function and the interrupt handler. The interrupt handler also uses this information to keep track of its progress. The user is only responsible to pass in the memory for this run-time state structure where the UART driver will take care of filling out the members.
Data Fields | |
| uint32_t | instance |
| UART module instance number. More... | |
| volatile bool | isTransmitInProgress |
| True if there is an active transmit. More... | |
| bool | isTransmitAsync |
| Whether the transmit is asynchronous or not. More... | |
| const uint8_t * | sendBuffer |
| The buffer of data being sent. More... | |
| volatile size_t | remainingSendByteCount |
| The remaining number of bytes to be transmitted. More... | |
| volatile size_t | transmittedByteCount |
| Number of bytes transmitted so far. More... | |
| volatile bool | isReceiveInProgress |
| True if there is an active receive. More... | |
| bool | isReceiveAsync |
| Whether the receive is asynchronous or not. More... | |
| uint8_t * | receiveBuffer |
| The buffer of received data. More... | |
| volatile size_t | remainingReceiveByteCount |
| The remaining number of bytes to be received. More... | |
| volatile size_t | receivedByteCount |
| Number of bytes received so far. More... | |
| sync_object_t | txIrqSync |
| Used to wait for ISR to complete its TX business. More... | |
| sync_object_t | rxIrqSync |
| Used to wait for ISR to complete its RX business. More... | |
| uint8_t | txFifoEntryCount |
| Number of data word entries in TX FIFO. More... | |
| uint32_t uart_state_t::instance |
| volatile bool uart_state_t::isTransmitInProgress |
| bool uart_state_t::isTransmitAsync |
| const uint8_t* uart_state_t::sendBuffer |
| volatile size_t uart_state_t::remainingSendByteCount |
| volatile size_t uart_state_t::transmittedByteCount |
| volatile bool uart_state_t::isReceiveInProgress |
| bool uart_state_t::isReceiveAsync |
| uint8_t* uart_state_t::receiveBuffer |
| volatile size_t uart_state_t::remainingReceiveByteCount |
| volatile size_t uart_state_t::receivedByteCount |
| sync_object_t uart_state_t::txIrqSync |
| sync_object_t uart_state_t::rxIrqSync |
| uint8_t uart_state_t::txFifoEntryCount |
| struct uart_user_config_t |
Use an instance of this struct with uart_init(). This allows you to configure the most common settings of the UART peripheral with a single function call. Settings include: UART baud rate; UART parity mode: disabled (default), or even or odd; the number of stop bits; the number of bits per data word.
Data Fields | |
| uint32_t | baudRate |
| UART baud rate. | |
| uart_parity_mode_t | parityMode |
| parity mode, disabled (default), even, odd | |
| uart_stop_bit_count_t | stopBitCount |
| number of stop bits, 1 stop bit (default) or 2 stop bits | |
| uart_bit_count_per_char_t | bitCountPerChar |
| number of bits, 8-bit (default) or 9-bit in a word (up to 10-bits in some UART instances) | |
| uart_status_t uart_init | ( | uint32_t | uartInstance, |
| uart_state_t * | uartState, | ||
| const uart_user_config_t * | uartUserConfig | ||
| ) |
This function will initialize the run-time state structure to keep track of the on-going transfers, ungate the clock to the UART module, initialize the module to user defined settings and default settings, configure the IRQ state structure and enable the module-level interrupt to the core, and enable the UART module transmitter and receiver. The following is an example of how to set up the uart_state_t and the uart_user_config_t parameters and how to call the uart_init function by passing in these parameters:
| uartInstance | The UART module instance number. |
| uartState | A pointer to the UART driver state structure memory. The user is only responsible to pass in the memory for this run-time state structure where the UART driver will take care of filling out the members. This run-time state structure keeps track of the current transfer in progress. |
| uartUserConfig | The user configuration structure of type uart_user_config_t. The user is responsbile to fill out the members of this structure and to pass the pointer of this struct into this function. |
| uart_status_t uart_send_data | ( | uart_state_t * | uartState, |
| const uint8_t * | sendBuffer, | ||
| uint32_t | txByteCount, | ||
| uint32_t | timeout | ||
| ) |
A blocking (also known as synchronous) function means that the function does not return until the transmit is complete. This blocking function is used to send data through the UART port.
| uartInstance | The UART module instance number. |
| sendBuffer | A pointer to the source buffer containing 8-bit data chars to send. |
| txByteCount | The number of bytes to send. |
| timeout | A timeout value for RTOS abstraction sync control in milli-seconds (ms). |
| uart_status_t uart_send_data_async | ( | uart_state_t * | uartState, |
| const uint8_t * | sendBuffer, | ||
| uint32_t | txByteCount | ||
| ) |
A non-blocking (also known as synchronous) function means that the function returns immediately after initiating the transmit function. The application has to get the transmit status to see when the transmit is complete. In other words, after calling non-blocking (asynchronous) send function, the application must get the transmit status to check if transmit is completed or not. The asynchronous method of transmitting and receiving allows the UART to perform a full duplex operation (simultaneously transmit and receive).
| uartState | A pointer to the UART driver state structure. |
| sendBuffer | A pointer to the source buffer containing 8-bit data chars to send. |
| txByteCount | The number of bytes to send. |
| uart_status_t uart_get_transmit_status | ( | uart_state_t * | uartState, |
| uint32_t * | bytesTransmitted | ||
| ) |
When performing an async transmit, the user can call this function to ascertain the state of the current transmission: in progress (or busy) or complete (success). In addition, if the transmission is still in progress, the user can obtain the number of words that have been currently transferred.
| uartState | A pointer to the UART driver state structure. |
| bytesTransmitted | A pointer to a value that is filled in with the number of bytes that are sent in the active transfer. |
| kStatus_UART_Success | The transmit has completed successfully. |
| kStatus_UART_TxBusy | The transmit is still in progress. bytesTransmitted is filled with the number of bytes which are transmitted up to that point. |
| uart_status_t uart_get_receive_status | ( | uart_state_t * | uartState, |
| uint32_t * | bytesReceived | ||
| ) |
When performing an async receive, the user can call this function to ascertain the state of the current receive progress: in progress (or busy) or complete (success). In addition, if the receive is still in progress, the user can obtain the number of words that have been currently received.
| uartState | A pointer to the UART driver state structure. |
| bytesReceived | A pointer to a value that is filled in with the number of bytes which are received in the active transfer. |
| kStatus_UART_Success | The receive has completed successfully. |
| kStatus_UART_RxBusy | The receive is still in progress. bytesReceived is filled with the number of bytes which are received up to that point. |
| void uart_shutdown | ( | uart_state_t * | uartState | ) |
This function disables the UART interrupts, disables the transmitter and receiver, and flushes the FIFOs (for modules that support FIFOs).
| uartState | A pointer to the UART driver state structure. |
| uart_status_t uart_receive_data | ( | uart_state_t * | uartState, |
| uint8_t * | rxBuffer, | ||
| uint32_t | requestedByteCount, | ||
| uint32_t | timeout | ||
| ) |
A blocking (also known as synchronous) function means that the function does not return until the receive is complete. This blocking function is used to send data through the UART port.
| uartState | A pointer to the UART driver state structure. |
| rxBuffer | A pointer to the buffer containing 8-bit read data chars received. |
| requestedByteCount | The number of bytes to receive. |
| timeout | A timeout value for RTOS abstraction sync control in milli-seconds (ms). |
| uart_status_t uart_receive_data_async | ( | uart_state_t * | uartState, |
| uint8_t * | rxBuffer, | ||
| uint32_t | requestedByteCount | ||
| ) |
A non-blocking (also known as synchronous) function means that the function returns immediately after initiating the receive function. The application has to get the receive status to see when the receive is complete. In other words, after calling non-blocking (asynchronous) get function, the application must get the receive status to check if receive is completed or not. The asynchronous method of transmitting and receiving allows the UART to perform a full duplex operation (simultaneously transmit and receive).
| uartState | A pointer to the UART driver state structure. |
| rxBuffer | A pointer to the buffer containing 8-bit read data chars received. |
| requestedByteCount | The number of bytes to receive. |
| uart_status_t uart_abort_sending_data | ( | uart_state_t * | uartState | ) |
During an async UART tranmission, the user has the option to terminate the transmission early if the transmission is still in progress.
| uartState | A pointer to the UART driver state structure. |
| kStatus_UART_Success | The transmit was succesful. |
| kStatus_UART_NoTransmitInProgress | No transmission is currently in progress. |
| uart_status_t uart_abort_receiving_data | ( | uart_state_t * | uartState | ) |
During an async UART receive, the user has the option to terminate the receive early if the receive is still in progress.
| uartState | A pointer to the UART driver state structure. |
| kStatus_UART_Success | The receive was succesful. |
| kStatus_UART_NoTransmitInProgress | No receive is currently in progress. |